\section{Die Ethernet-Bridge konfiguration des Linux Kernels}
\label{sec:bridge}
Um die Netzwerke der Gastsysteme mit dem Netzwerk des Hostsystems zu verbinden und trotzdem
die Möglichkeit der Konfiguration wie an einem eigenständigen Rechner zu haben, müssen die virtuellen Netzwerkkarten (Hier: tap0 und tap1 - Beschrieben im Bereich TUN/TAP Devices)
über eine NAT\footnote{Network Address Translation} (über iptables) Umsetzung an die physikalische NIC \footnote{Network Interface Controler (Netzwerkkarte)} des Gasgebersystems anbinden. Hierzu wird die Ethernet-Bridge-Konfiguration des Linux Kernels benötigt. Die Ethernet-Bridge stellt im wesentlichen (wie der Name schon sagt) die selbe Funktionalität wie eine Bridge der Netzwerktechnik dar, also hierüber lässt sich ein Hub bzw. ein Switch realisieren.

\subsection{Benötigte Linuxpakete}
\label{sec:br-packeges}
Um die Ethernet-Bridge konfigurieren zu können muss das folgende Paket installiert sein:
\begin{itemize}
	\item[\$]bridge-utils
\end{itemize}
Dieses Paket stellt das Kommandozeilenprogramm \begin{verbatim} brctl \end{verbatim}, hiermit lässt sich die Ethernet-Bridge konfigurieren.

\subsection{Hintergrundwissen: Bridge}
\label{sec:wissen-bridge}
Die Bridge ist wird benötigt um verschiedene, seperate Netzwerke zu einem großen logischen Netzwerk zu verbinden. Die einfachste Form ist dabei ist die Funktionsweise wie in einem Hub, bei dem alle ankommenden Datenpakete an alle anderen Ports weitergeleitet werden. Dabei entsteht jedoch eine große Kollisionsdomäne (Ein Netzwerkbereich indem es zu Kollisionen der Datenpakete kommen kann.).\newline
Um dies zu verhindern, kleinere Kollisionsdomänen zu erschaffen und somit den möglichen Datendurchsatz im Netzwerk zu erhöhen, merkt sich eine Bridge jedoch bei jedem ankommenden Datenpaket, welche MAC-Addresse der absender hat und vermerkt alle in einer Tabelle. Somit kann die Bridge gezielt Pakete weiterleiten wenn der Empfänger ihr dadurch bereits bekannt ist. Ist der Empfänger nicht bekannt wird das Datenpaket weiterhin an alle weitergeleitet. Wenn die Bridge sich einen Absender merkt, versieht sie die Adresse mit einem Zeitstempel. Durch diesen Agingtimer kann die Bridge zu alte Informationen, also wenn sich ein Absender zu lange nicht mehr gemeldet hat, auszusortieren und zu löschen.\newline
Eine weitere Fähigkeit der Bridge ist das Spanning Tree Protocol, dass es ihr ermöglicht sich mit anderen Bridges abzusprechen um so redundante Pfade zu vermeiden und damit eine Vervielfachung der Datenpakete zu verhindern, jedoch im Fall eines Ausfalls trotzdem auf einen alternativen Pfad ausweichen zu können. Hierfür wird der beste Pfad ermittelt und alle langsameren abgeschalten. 

\subsection{Das Programm: brctl}
\label{sec:brctl}
Mit Hilfe des brctl Kommandozeilenprogramms kann man sehr einfach eine Konfiguration der Ethernet-Bridge durchführen. Der Funktionsumfang besteht aus: \textbf{brctl [Kommando]}
\begin{itemize}
	\item[\$]Verwalten einer Bridge
		\begin{itemize}
			\item[\$]\textbf{addbr} Anlegen einer neuen Bridge
			\item[\$]\textbf{delbr} Löschen einer bestehen Bridge
			\item[\$]\textbf{show} Anzeigen einer Bridge
		\end{itemize}
	\item[\$]Portverwaltung
		\begin{itemize}
			\item[\$]\textbf{addif} Anschließen eines NIC - somit anlegen eines neuen Ports
			\item[\$]\textbf{delif} Trennen eines NIc - somit löschen eines Ports
		\end{itemize}
	\item[\$]Ageing
		\begin{itemize}
			\item[\$]\textbf{showmacs} Anzeigen der gelernten MAC-Adressen
			\item[\$]\textbf{setageing} Zeit für den Agetimer setzen (in Sekunden)
			\item[\$]\textbf{setgcint} Zeit für die Garbagecollection setzen. (Intervall zum Test ob Agetimer abgelaufen sind)
		\end{itemize}
	\item[\$]Spanning Tree Protocol
		\begin{itemize}
			\item[\$]\textbf{stp} STP an und ausschalten
			\item[\$]\textbf{setbridgeprio} Bridgepriorität ändern
			\item[\$]\textbf{setfd} Forwarddelay einstellen
			\item[\$]\textbf{sethello}Hellotime setzen
			\item[\$]\textbf{setmaxage} Max. Message age setzen
			\item[\$]\textbf{setpathcost} Pathkosten ändern
			\item[\$]\textbf{setportprio} Portprioriäten setzen
		\end{itemize}
\end{itemize}

\subsection{Die Bridge in der Praxis}
\label{sec:config-br}
Mit dem unter \ref{sec:brctl} vorgestellten Programm sollte es uns jetzt möglich sei eine Bridge für unsere Virtualisierung anzulegen. Hierzu müssen werden folgende Schritte benötigt:
\begin{description}
	\item[Anlegen einer Bridge]\begin{verbatim}su -c "brctl addbr br0"\end{verbatim}
	\item[br0 hochbringen]\begin{verbatim}su -c "ifconfig br0 192.168.0.1/24 up"\end{verbatim}
	\item[NICs hinzufügen]\begin{verbatim}su -c "brctl addif br0 tap0"\end{verbatim}
\end{description}
